#ifndef __GENE_CREATE_DATA__
#define __GENE_CREATE_DATA__

#include "Entry/LibExportCom.h"
#include "Data/DataIf.h"

class IEntity;
class IScene;

//
//	dynamic data interface for creating an gene
//	different gene will require different environment data when create it.
//	implement this interface to ensure anything is possible for gene creation.
//
class TCOM_API  IGeneCreateData //: public IData
{
public:
	virtual ~IGeneCreateData()	{;}

	//
	//	Class identifier
	//
	virtual int		getClass()const = 0;

	//
	//	get the static data
	//	
	virtual IData*		getStaticData()	= 0;

	//
	//	Time to live for an gene on his host
	//	This will override the duration that configured in gene static data
	//
	virtual int			getDuration()const = 0;

	//
	//	entity
	//
	virtual int			getSrcEntityID()const = 0;
	virtual IEntity*	getSrcEntity()const  = 0;
	virtual IScene*		getSrcScene()const = 0;

	//
	//	Data X, Y, Z
	//	Which is used most frequently
	//
	virtual void	setDataX(int x) = 0;
	virtual void	setDataY(int y) = 0;
	virtual void	setDataZ(int z) = 0;

	virtual int		getDataX()const = 0;
	virtual int		getDataY()const = 0;
	virtual int		getDataZ()const = 0;
};

#endif
